Technical Q&A QA1172
Be careful when using AuthorizationCreate


Q: AuthorizationCreate Çégǡǃ AuthorizationRef ÇçÏê¨ÇµÅAìØéûÇ…åªç›ãñâ¬Ç≥ÇÍǃǢÇÈå†å¿ÇägëÂÇ∑ÇÈÇΔǢǧëÄçÏÇÅA1 ǬÇÃÉXÉeÉbÉvÇ≈é¿çsÇ≈Ç´Ç‹Ç∑Ç©ÅH

A: Ç≈Ç´Ç‹Ç∑ÅBÇΩÇæÇµêTèdÇ…çsǧïKóvǙdžÇËÇ‹Ç∑ÅBå†å¿ÇÃóvãÅÇ™ãëî€Ç≥ÇÍÇΩÇËÅAâΩÇÁÇ©ÇÃóùóRÇ≈îFèÿÇ…é∏îsǵÇΩÇËÇ∑ÇÈÇΔÅAé¿ç€Ç…ÇÕ AuthorizationRef Ç™çÏê¨Ç≥ÇÍǻǢǻÇflÅAǪÇÃå„ÇÃåƒÇ—èoǵÇ≈ AuthorizationRef ÇégǧÇΔé∏îsǵNjÇ∑ÅB

LJǡÇΔÇÊÇ¢ï˚ñ@ÇÕÅAAuthorizationCreate ÇégǧÇΔÇ´Ç… AuthorizationRights ÇÃèâä˙ê›íËÇΔǵǃ NULL ÇìnǵÅAAuthorizationRef Ç™ê≥èÌÇ…çÏê¨Ç≥ÇÍÇÈÇÊǧDžǵNjÇ∑ÅBǪÇÃå„ÅAAuthorizationCopyRights ÇåƒÇ—èoǵǃâ¬î\Ç»å†å¿ÇåàíËÇ‹ÇΩÇÕägëÂǵNjÇ∑ÅB

 

OSStatus status;
AuthorizationRef authorizationRef;
AuthorizationItem right = { "com.mycompany.myapplication.command1", 0, NULL, 0 };
AuthorizationRights rightSet = { 1, &right };
AuthorizationFlags flags = kAuthorizationFlagExtendRights | kAuthorizationFlagInteractionAllowed;

/* êVãKÇà AuthorizationRef ÉIÉuÉWÉFÉNÉgÇçÏê¨Ç∑ÇÈÇ™ÅAAuthorizationRights ÇÃê›íËÇΔǵǃ NULL ÇìnǵÅAAuthorizationRef ÇǪÇÃå„ÇÃåƒÇ—èoǵÇ≈LJég ǶÇÈÇÊǧDžÇ∑ÇÈ */ status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);

if (status == errAuthorizationSuccess) { /* AuthorizationRef ÇégǡǃÅAÉÜÅ[ÉUÇ™ÅgrightSetÅhDždžÇÈå†å¿ÇÃé¿çsÇ™ ãñâ¬Ç≥ÇÍÇÈǩǫǧǩÇîªífÇ≈Ç´ÇÈ */ status = AuthorizationCopyRights(authorizationRef, &rightSet, kAuthorizationEmptyEnvironment, flags, NULL); }

ÉäÉXÉg 1. êÑèßÇ≥ÇÍÇÈ AuthorizationCreate ÇÃégópï˚ñ@

 

[2002 îN 9 åé 20 ì˙]